/**   
 * Copyright © 2020 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述： staff （员工） 相关的简单数据操作任务
 * @Package: com.yl.staff.controller 
 * @author: Bai   
 * @date: 2020年12月21日 下午5:08:22 
 */
package com.yl.staff.controller;

import java.util.List;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.yl.staff.dao.MapStaffMessage;
import com.yl.staff.model.BeanStaffMessage;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/**   
* Copyright: Copyright (c) 2020 云邻信息科技
* 
* @ClassName: StaffController.java
* @Description: 返回 staff （员工）标准数据
*
* @version: v1.0.0
* @author: Bai
* @date: 2020年12月21日 下午5:08:22 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2020年12月21日     Bai           v1.0.0               新建
* 2021年01月19日     Bai           v1.1.0               新增 添加员工基本信息方法
* 												   addStaff(BeanStaffMessage msgBean)<br>
* 2021年01月20日     Bai           v1.2.0               新增 添加员工基本信息方法
* 												   upStaff(BeanStaffMessage msgBean)<br>
* 
*/
/*
 * 功能列表：
* 	Date         Author          Method            				 Description
*	---------------------------------------------------------------------*<br>
*	2020年12月21日     Bai            findStafs()        				   				     返回staff（完整人员信息列表）数据
* 	2020年12月21日     Bai            findStafsById(int id) 				  			     根据数据编号获取单条信息
*   2020年12月21日     Bai            findStafsByCode(String staffCode)  				     根据staffCode（编号）获取单条数据信息
 *  2021年01月09日     Bai			 findStafsByPositionStatus(String positionStatus) 根据在职状态查询所有用户信息方法 
 *  2021年01月19日     Bai			 addStaff(BeanStaffMessage msgBean)		      	      添加员工基本信息
 *  2021年01月20日     Bai			 upStaff(BeanStaffMessage msgBean)		      	      根据数据编号更新员工数据内容
 * */
@RestController
@MapperScan("com.yl.staff.dao")
@Api(value = "基础数据接口", tags = "工作人员基础数据相关")
public class StaffController {
	/*
	 * staff-message 数据接口对象
	 */
	@Autowired
	private MapStaffMessage staffMapper;
	/**
	 * 
	* @Function: StaffController.java
	* @Description: 返回staff（完整人员信息列表）数据
	*
	* @param: 无
	* @return：List<BeanStaffMessage>
	* @throws：异常描述
	*
	* @version: v1.0.0
	* @author: Bai
	* @date: 2020年12月21日 下午7:58:23 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2020年12月21日     Bai           v1.0.0               	新建
	 */
	@RequestMapping(value = "/findAll",method = RequestMethod.GET)
	@ApiOperation(value = "获取人员信息列表（完整）")
	public List<BeanStaffMessage> findStafs() {
		List<BeanStaffMessage> staffs = staffMapper.selectAll();
		return staffs;
	}
	
	/**
	 * 
	* @Function: StaffController.java
	* @Description: 根据数据编号获取单条信息
	*
	* @param: int id
	* @return：BeanStaffMessage
	* @throws：异常描述
	*
	* @version: v1.0.0
	* @author: Bai
	* @date: 2020年12月21日 下午8:02:34 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2020年12月21日     Bai           v1.0.0               	新建
	 */
	@RequestMapping(value = "/finById",method = RequestMethod.POST)
	@ApiOperation(value = "根据id（数据编号）获取单条数据信息")
	public BeanStaffMessage findStafsById(@ApiParam(name = "id", value = "数据编号", required = true) @RequestParam(name = "id") int id) {
		BeanStaffMessage staffs = staffMapper.selectById(id);
		return staffs; 
	}
	/**
	 * 
	* @Function: StaffController.java
	* @Description: 根据员工编号获取单条信息
	*
	* @param: String staffCode
	* @return：BeanStaffMessage
	* @throws：异常描述
	*
	* @version: v1.0.0
	* @author: Bai
	* @date: 2020年12月21日 下午9:25:12 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2020年12月21日     Bai           v1.0.0               	新建
	 */
	@RequestMapping(value = "/findByStaff",method = RequestMethod.POST)
	@ApiOperation(value = "根据staffCode（编号）获取单条数据信息")
	public BeanStaffMessage findStafsByCode(@ApiParam(name = "staffCode", value = "员工编号", required = true) @RequestParam(name = "staffCode") String staffCode) {
		BeanStaffMessage staffs = staffMapper.selectByCode(staffCode);
		return staffs; 
	}
	/**
	 * 
	* @Function: StaffController.java
	* @Description: 根据在职状态获取人员列表（在职/离职）
	*
	* @param:String positionStatus 在职状态
	* @return：List<BeanStaffMessage> 人员信息列表
	* @throws：异常描述
	*
	* @version: v1.0.0
	* @author: Bai
	* @date: 2021年1月9日 下午3:00:22 
	*
	* Modification History:<br>
	* Date         Author          Version            Description
	*------------------------------------------------------------*<br>
	* 2021年1月9日       Bai             v1.0.0                                    新建 <br>
	 */
	/*
	 * 前端如果使用axios提交application/json格式数据
	 * 可以考虑使用 @ResponseBody注解标识方法，参数注解使用@RequestBody 参数使用HashMap<String,String> map接收
	 * */
	@RequestMapping(value = "/findAllPositionStatus",method = RequestMethod.POST)
	@ApiOperation(value = "根据在职状态获取人员信息列表（完整）")
	public List<BeanStaffMessage> findStafsByPositionStatus(@ApiParam(name = "positionStatus", value = "在职状态", required = false) @RequestParam(name = "positionStatus") String positionStatus) {
		List<BeanStaffMessage> staffs = staffMapper.selectAllPositionStatus(positionStatus);
		return staffs;
	}
	/**
	 * 
	* @Function: StaffController.java
	* @Description: 添加新用户基本信息
	*
	* @param:BeanStaffMessage 信息对象
	* @return： boolean true OR false
	* @throws：异常描述
	*
	* @version: v1.0.0
	* @author: Bai
	* @date: 2021年1月19日 下午5:23:41 
	*
	* Modification History:<br>
	* Date         Author          Version            Description
	*---------------------------------------------------------*<br>
	* 2021年1月19日     Bai             v1.0.0                                    新建 <br>
	 */
	@RequestMapping(value = "/addStaff",method = RequestMethod.POST)
	@ApiOperation(value = "添加员工信息")
	@ApiImplicitParams({
		@ApiImplicitParam(paramType="query",name="id",dataType="int",required=false,value="此数据禁止填写"),
		@ApiImplicitParam(paramType="query",name="staffCode",dataType="String",required=true,value="员工编号"),
		@ApiImplicitParam(paramType="query",name="station",dataType="String",required=true,value="岗位"),
		@ApiImplicitParam(paramType="query",name="department",dataType="String",required=true,value="部门"),
		@ApiImplicitParam(paramType="query",name="name",dataType="String",required=true,value="用户的姓名"),
		@ApiImplicitParam(paramType="query",name="sex",dataType="String",required=true,value="性别"),
		@ApiImplicitParam(paramType="query",name="mobile",dataType="String",required=true,value="电话"),
		@ApiImplicitParam(paramType="query",name="birthday",dataType="String",required=true,value="出生日期"),
		@ApiImplicitParam(paramType="query",name="userCard",dataType="String",required=true,value="身份证号码"),
		@ApiImplicitParam(paramType="query",name="education",dataType="String",required=false,value="学历信息"),
		@ApiImplicitParam(paramType="query",name="univesity",dataType="String",required=false,value="毕业院校"),
		@ApiImplicitParam(paramType="query",name="major",dataType="String",required=false,value="专业"),
		@ApiImplicitParam(paramType="query",name="entryTime",dataType="String",required=true,value="入职时间"),
		@ApiImplicitParam(paramType="query",name="workScheduleTolerance",dataType="String",required=true,value="工作时限(合同期)"),
		@ApiImplicitParam(paramType="query",name="bank",dataType="String",required=true,value="银行"),
		@ApiImplicitParam(paramType="query",name="bankCard",dataType="String",required=true,value="银行卡号"),
		@ApiImplicitParam(paramType="query",name="address",dataType="String",required=true,value="家庭住址"),
		@ApiImplicitParam(paramType="query",name="departure",dataType="String",required=false,value="离职日期"),
		@ApiImplicitParam(paramType="query",name="contractStartDate",dataType="String",required=false,value="合同开始时间"),
		@ApiImplicitParam(paramType="query",name="contractEndDate",dataType="String",required=false,value="合同结束时间"),
		@ApiImplicitParam(paramType="query",name="contractRemarks",dataType="String",required=false,value="合同备注"),
		@ApiImplicitParam(paramType="query",name="positionStatus",dataType="String",required=true,value="在职状态：在职/离职")
	})
	public boolean addStaff(BeanStaffMessage msgBean) {
		return staffMapper.insertStaffMessage(msgBean);
	}
	/**
	 * 
	* @Function: StaffController.java
	* @Description: 更具数据编号滚更新员工信息
	*
	* @param:BeanStaffMessage 信息对象
	* @return： boolean true OR false
	* @throws：异常描述
	*
	* @version: v1.0.0
	* @author: Bai
	* @date: 2021年1月20日 上午10:34:57 
	*
	* Modification History:<br>
	* Date         Author          Version            Description
	*---------------------------------------------------------*<br>
	* 2021年1月20日     Bai             v1.0.0              	新建 <br>
	 */
	@RequestMapping(value = "/upStaff",method = RequestMethod.POST)
	@ApiOperation(value = "根据数据编号更新员工信息")
	@ApiImplicitParams({
		@ApiImplicitParam(paramType="query",name="id",dataType="Integer",required=true,value="数据编号"),
		@ApiImplicitParam(paramType="query",name="staffCode",dataType="String",required=true,value="员工编号"),
		@ApiImplicitParam(paramType="query",name="station",dataType="String",required=false,value="岗位"),
		@ApiImplicitParam(paramType="query",name="department",dataType="String",required=false,value="部门"),
		@ApiImplicitParam(paramType="query",name="name",dataType="String",required=false,value="用户的姓名"),
		@ApiImplicitParam(paramType="query",name="sex",dataType="String",required=false,value="性别"),
		@ApiImplicitParam(paramType="query",name="mobile",dataType="String",required=false,value="电话"),
		@ApiImplicitParam(paramType="query",name="birthday",dataType="String",required=false,value="出生日期"),
		@ApiImplicitParam(paramType="query",name="userCard",dataType="String",required=false,value="身份证号码"),
		@ApiImplicitParam(paramType="query",name="education",dataType="String",required=false,value="学历信息"),
		@ApiImplicitParam(paramType="query",name="univesity",dataType="String",required=false,value="毕业院校"),
		@ApiImplicitParam(paramType="query",name="major",dataType="String",required=false,value="专业"),
		@ApiImplicitParam(paramType="query",name="entryTime",dataType="String",required=false,value="入职时间"),
		@ApiImplicitParam(paramType="query",name="workScheduleTolerance",dataType="String",required=false,value="工作时限(合同期)"),
		@ApiImplicitParam(paramType="query",name="bank",dataType="String",required=false,value="银行"),
		@ApiImplicitParam(paramType="query",name="bankCard",dataType="String",required=false,value="银行卡号"),
		@ApiImplicitParam(paramType="query",name="address",dataType="String",required=false,value="家庭住址"),
		@ApiImplicitParam(paramType="query",name="departure",dataType="String",required=false,value="离职日期"),
		@ApiImplicitParam(paramType="query",name="contractStartDate",dataType="String",required=false,value="合同开始时间"),
		@ApiImplicitParam(paramType="query",name="contractEndDate",dataType="String",required=false,value="合同结束时间"),
		@ApiImplicitParam(paramType="query",name="contractRemarks",dataType="String",required=false,value="合同备注"),
		@ApiImplicitParam(paramType="query",name="positionStatus",dataType="String",required=false,value="在职状态：在职/离职")
	})
	public boolean upStaff(BeanStaffMessage msgBean) {
		return staffMapper.updateStaffMessageById(msgBean);
	}
}